//349. 两个数组的交集


#include <set>
#include <vector>
using namespace std;

class Solution
{
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2)
    {
        vector<int> ret;

        // 排序 + 去重
        set<int> s1(nums1.begin(), nums1.end());
        set<int> s2(nums2.begin(), nums2.end());

        set<int>::iterator it1 = s1.begin(), it2 = s2.begin();
        while(it1 != s1.end() && it2 != s2.end()) // 任一走完就结束
        {
            if(*it1 < *it2)
                it1++;
            else if(*it1 > *it2)
                it2++;
            else
            {
                ret.push_back(*it1);
                it1++;
                it2++;
            }
        }
        return ret;
    }
};